Various forms of storage systems are used today. These forms include direct attached storage (DAS), network attached storage (NAS) systems, storage area networks (SANs), and others. Storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up data and others.
A storage system typically includes at least a computing system (may also be referred to as a “server” or “storage server”), which is a processing system configured to store and retrieve data on behalf of one or more client computing systems (“clients”). The storage system may be presented to a client system for storing information.
Traditionally, when a client system intends to copy data from a source storage location to a destination storage location, the storage system retrieves the data, provides the data to the client system, the client system saves the data at a memory location and then data is transferred to the destination storage location. The source and the destination storage locations may be within a same storage device or different storage devices.
The traditional client centric copy approach described above has shortcomings because it consumes processing resources as well as network bandwidth. To alleviate the shortcomings of the traditional approach, a token based “copy-offload” process is one technique that is used to copy a source data container from a source location to a destination location without having to send the actual data to the client.
The following process steps are typically used in a conventional method to copy a source data container from a source location to a destination location, using a copy-offload operation: (a) In response to a copy-offload request, a source data container is opened and then read. (b) A token that represents information of the source data container at any given time is generated. A point in time copy (or a snapshot) of the data container is taken to generate the token. (c) The token is provided to the client and the client then sends an offload write request. (d) A destination data container is opened and then using the token, the data container is copied from the source location. Generating the token by taking the snapshot is undesirable since it uses processing time and may limit a size of the token. Continuous efforts are being made to efficiently perform copy-offload operations, preferably without taking a point in time copy of the data container that is being copied.